package com.wgh.product.converter;

import com.wgh.product.dto.ProductTagDTO;
import com.wgh.product.entity.shop.ProductTag;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 商品标签转换器
 * 用于ProductTag实体和ProductTagDTO之间的转换
 */
@Component
public class ProductTagConverter {

    /**
     * 将ProductTag实体转换为ProductTagDTO
     * @param productTag 商品标签实体
     * @return 商品标签DTO
     */
    public ProductTagDTO toDTO(ProductTag productTag) {
        if (productTag == null) {
            return null;
        }
        
        ProductTagDTO productTagDTO = new ProductTagDTO();
        productTagDTO.setId(productTag.getId());
        productTagDTO.setName(productTag.getName());
        productTagDTO.setColor(productTag.getColor());
        productTagDTO.setIcon(productTag.getIcon());
        productTagDTO.setSort(productTag.getSort());
        productTagDTO.setStatus(productTag.getStatus());
        productTagDTO.setCreateTime(productTag.getCreateTime());
        productTagDTO.setUpdateTime(productTag.getUpdateTime());
        
        return productTagDTO;
    }

    /**
     * 将ProductTagDTO转换为ProductTag实体
     * @param productTagDTO 商品标签DTO
     * @return 商品标签实体
     */
    public ProductTag toEntity(ProductTagDTO productTagDTO) {
        if (productTagDTO == null) {
            return null;
        }
        
        ProductTag productTag = new ProductTag();
        productTag.setId(productTagDTO.getId());
        productTag.setName(productTagDTO.getName());
        productTag.setColor(productTagDTO.getColor());
        productTag.setIcon(productTagDTO.getIcon());
        productTag.setSort(productTagDTO.getSort());
        productTag.setStatus(productTagDTO.getStatus());
        productTag.setCreateTime(productTagDTO.getCreateTime());
        productTag.setUpdateTime(productTagDTO.getUpdateTime());
        
        return productTag;
    }

    /**
     * 将ProductTag实体列表转换为ProductTagDTO列表
     * @param productTags 商品标签实体列表
     * @return 商品标签DTO列表
     */
    public List<ProductTagDTO> toDTOList(List<ProductTag> productTags) {
        if (productTags == null || productTags.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductTagDTO> productTagDTOs = new ArrayList<>();
        for (ProductTag productTag : productTags) {
            productTagDTOs.add(toDTO(productTag));
        }
        
        return productTagDTOs;
    }

    /**
     * 将ProductTagDTO列表转换为ProductTag实体列表
     * @param productTagDTOs 商品标签DTO列表
     * @return 商品标签实体列表
     */
    public List<ProductTag> toEntityList(List<ProductTagDTO> productTagDTOs) {
        if (productTagDTOs == null || productTagDTOs.isEmpty()) {
            return new ArrayList<>();
        }
        
        List<ProductTag> productTags = new ArrayList<>();
        for (ProductTagDTO productTagDTO : productTagDTOs) {
            productTags.add(toEntity(productTagDTO));
        }
        
        return productTags;
    }
}